#!/usr/bin/env node
//命令行 watch date/ls/tree  默认2秒刷新一次  ctrl+c 退出
const fs = require('fs');

const dir = process.argv[2] ?? __dirname;

// 检查目录是否存在
if (!fs.existsSync(dir)) {
    console.error(`错误：目录 ${dir} 不存在。`);
    process.exit(1);
}

// 监视目录下文件的变化
const w = fs.watch(dir, (eventType, filename) => {
    if (filename) {
        console.log(`事件：${eventType}, 文件名：${filename}`);
    } else {
        console.log(`事件：${eventType}`);
    }
});

// 处理 Ctrl+C 退出
process.on('SIGINT', function() {
    console.log('程序将要结束运行，取消监视目录...');
    w.close();
    console.log('unwatch the directory');

    // 等待5秒后结束程序
    setTimeout(() => {
        console.log('Game over after 5 seconds...');
        process.exit();
    }, 5000);
});

// ps aux | grep watch查看pid

// 两个终端窗口
//监听窗口
// mkdir ninetith
// ./19-watch.js ninetith
// 修改窗口
// cd ninetith   ls 
// 左边会监视     
// touch a.txt 
// echo hello > a.txt
// mv a.txt b.txt 
// mkdir def 
// rm b.txt